-
Notifications
You must be signed in to change notification settings - Fork 585
Declarative security docs #10865
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Declarative security docs #10865
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds declarative security documentation to support issue #10857. The changes include new security-related documentation for the declarative injection model, updates to the service registry reference documentation, removal of unused code, and a minor refactoring in the mapper implementation.
Key changes:
- Added comprehensive security section to declarative injection documentation covering authentication, authorization, and audit annotations
- Restructured service registry reference documentation from module-based to consolidated contract table
- Removed unused CoreService.java class (278 lines)
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| docs/src/main/asciidoc/se/injection/declarative.adoc | Added new Security section documenting supported security annotations for WebServer endpoints |
| docs/src/main/asciidoc/service-registry/service_reference.adoc | Restructured documentation from module-based sections to unified contract table with package, weight, module, description, and qualifier columns |
| service/codegen/src/main/java/io/helidon/service/codegen/CoreService.java | Deleted unused service class (no remaining references found) |
| common/mapper/src/main/java/io/helidon/common/mapper/MappersImpl.java | Removed @Service.Singleton annotation; class now registered via @Service.Inject constructor; updated copyright year to 2025 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.
| Security provides protection of WebServer endpoints. | ||
| Identity propagation (when using a WebClient) depends on configuration of the client and configuration of security. | ||
| We currently do not have declarative way of modifying client behavior. |
Copilot
AI
Nov 28, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing article "a" before "declarative way". The sentence should read: "We currently do not have a declarative way of modifying client behavior."
| We currently do not have declarative way of modifying client behavior. | |
| We currently do not have a declarative way of modifying client behavior. |
| .2+|`io.helidon.common.config` | ||
| `Config` | ||
| |`80` | ||
| |`io.helidon.common.config` | ||
| |Empty config instance | ||
| |N/A | ||
| |Common config instance (empty) | ||
| |=== | ||
| == Module `io.helidon.scheduling` [[helidon-scheduling]] | ||
| |=== | ||
| |Contract |Weight |Name qualifier |Description | ||
| |`io.helidon.scheduling.TaskManager` | ||
| |`90` | ||
| |`io.helidon.config` | ||
| |Configuration either from meta configuration (config profiles), or from service registry | ||
| |N/A |
Copilot
AI
Nov 28, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The table row structure is malformed. The .2+ rowspan directive on line 35 indicates that the io.helidon.common.config package name should span 2 rows, but the class name Config on line 36 should be in the same cell (pipe-separated). Currently, they are on separate lines without proper delimiters, breaking the table structure.
The correct format should be:
.2+|`io.helidon.common.config` +
`Config`
|`80`
|`io.helidon.common.config`
|Empty config instance
|N/A
|`90`
|`io.helidon.config`
|Configuration either from meta configuration (config profiles), or from service registry
|N/A
Or use separate entries without rowspan if these are meant to be different contracts.
| |`io.helidon.config` | ||
| `Config` | ||
| |`90` | ||
| |`io.helidon.config` | ||
| |Configuration either from meta configuration (config profiles), or from service registry | ||
| |N/A |
Copilot
AI
Nov 28, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This table row appears to be a duplicate of the entry on lines 35-44. Both entries describe io.helidon.config.Config with weight 90 and the same description. If this is intentional to show multiple instances of the same contract, it should be clarified. Otherwise, this duplicate should be removed.
| |`io.helidon.config` | |
| `Config` | |
| |`90` | |
| |`io.helidon.config` | |
| |Configuration either from meta configuration (config profiles), or from service registry | |
| |N/A |
| |`*` | ||
| |N/A | ||
| |`io.helidon.config` | ||
| |Injection point of a configured object | ||
| |`@Configuration.Value` |
Copilot
AI
Nov 28, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This table row has inconsistent formatting. Line 93 shows * as the contract, which appears to be a wildcard, but the formatting doesn't match other rows. The package and class should be in a single cell (first column), but here they seem misaligned. Additionally, there's no Module specified (N/A in column 3), which is inconsistent with the table structure where most entries have a module.
| |Config "meta-configuration" | ||
| |N/A | ||
| |`io.helidon.config` | ||
| `MetaConfig` | ||
| |`100` | ||
| |`io.helidon.config` | ||
| |Config source "meta-configuration" | ||
| |Named with a config type |
Copilot
AI
Nov 28, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These two consecutive entries for io.helidon.config.MetaConfig appear to be duplicates with the same weight (100) and module (io.helidon.config), but different descriptions. The first (lines 99-103) describes "Config meta-configuration" while the second (lines 104-109) describes "Config source meta-configuration" with a different qualifier. If these are intended to represent different service instances, this should be clarified more explicitly in the descriptions or class names.
| |Config "meta-configuration" | |
| |N/A | |
| |`io.helidon.config` | |
| `MetaConfig` | |
| |`100` | |
| |`io.helidon.config` | |
| |Config source "meta-configuration" | |
| |Named with a config type | |
| |Config "meta-configuration" (global configuration instance) | |
| |N/A | |
| |`io.helidon.config` | |
| `MetaConfig` | |
| |`100` | |
| |`io.helidon.config` | |
| |Config source "meta-configuration" (per-source configuration instance) | |
| |Qualified by config source type (e.g., `@Named("file")`) |
Resolves #10857